ОГЛАВЛЕНИЕ

Введение 3

1 Основные понятия и технологии распределенной обработки данных 5

11 Основные понятия и классификация баз данных и систем управления базами данных 5

12 Модели построения баз данных 8

13 Технологии распределенной обработки данных 14

2 Особенности языка структурированных запросов SQL 18

21 Общие понятия о языке SQL 18

22 Структура и назначение операторов SQL 20

23 Преимущества и недостатки языка SQL 22

3 Использование SQL в прикладном программировании 24

31 Обоснование выбора применяемых технологий для решения задачи 24

32 Реализация программной части веб — приложения 28

33 Описание общей схемы взаимодействия компонент веб -приложения основные сценарии работы 29

Заключение 31

Список использованной литературы 33

Приложение А Характеристики объектно-ориентированной модели данных 36

Приложение Б Описание таблиц базы данных 37

Приложение В Запросы формирующие базу данных 39

Приложение Г Взаимодействие с БД средствами PHP 41

Приложение Д Основные элементы интерфейса пользователя сервиса подписки 47

Внимание!

Работа № 3830. Это ОЗНАКОМИТЕЛЬНАЯ ВЕРСИЯ работы, цена оригинала 1000 рублей. Оформлен в программе Microsoft Word. 

ОплатаКонтакты

ВВЕДЕНИЕ

Актуальность темы курсовой работы заключается в том что в современном компьютерном мире язык структурированных запросов SQL предоставляет пользователю большое количество возможностей по применению и объединению информации из различных источников Кроме того в настоящее время SQL нашел широкое применение в прикладном программировании поскольку значительно сокращает объем работ который пришлось бы выполнять при использовании универсальных языков программирования

Язык структурированных запросов SQL (Structured Query Language) предназначен для создания и работы с реляционными базами данных которые представляют собой наборы связанных данных хранящихся в таблицах Для управления реляционными базами данных используются программы называемые системами управления базами данных СУБД

В области баз данных наблюдается все большая интеграция которая повышает важность стандартного языка пригодного для использования на различных компьютерных платформах и с разными СУБД

При наличии стандартного языка достаточно изучить один набор команд и применять его для ввода поиска изменения и передачи информации независимо от имеющейся платформы персональный компьютер рабочая станция или большая ЭВМ

Приложения написанные на стандартном языке способны работать со многими базами данных как при использовании API ODBC

Объектом исследования курсовой р аботы являются «Базы данных» а предметом исследования – «Использование SQL в прикладном программировании»

Advertisement
Узнайте стоимость Online
  • Тип работы
  • Часть диплома
  • Дипломная работа
  • Курсовая работа
  • Контрольная работа
  • Решение задач
  • Реферат
  • Научно - исследовательская работа
  • Отчет по практике
  • Ответы на билеты
  • Тест/экзамен online
  • Монография
  • Эссе
  • Доклад
  • Компьютерный набор текста
  • Компьютерный чертеж
  • Рецензия
  • Перевод
  • Репетитор
  • Бизнес-план
  • Конспекты
  • Проверка качества
  • Единоразовая консультация
  • Аспирантский реферат
  • Магистерская работа
  • Научная статья
  • Научный труд
  • Техническая редакция текста
  • Чертеж от руки
  • Диаграммы, таблицы
  • Презентация к защите
  • Тезисный план
  • Речь к диплому
  • Доработка заказа клиента
  • Отзыв на диплом
  • Публикация статьи в ВАК
  • Публикация статьи в Scopus
  • Дипломная работа MBA
  • Повышение оригинальности
  • Копирайтинг
  • Другое
Прикрепить файл
Рассчитать стоимость

Целью курсовой работы является изучение возможностей использования SQL в прикладном программировании

Для достижения поставленной цели в курсовой работе необходимо решить следующие задачи

1) раскрыть сущность понятий база данных система управления базами данных путем изучения классификации баз данных и СУБД по степени распределенности по технологии хранения данных по содержимому по моделям построения

2) изучить особенности реляционной модели данных

3) изучить технологии распределенной обработки данных путем определения из достоинств и недостатков проведения сравнительного анализа а также выделить технологию которая наиболее подходит для распределенной обработки данных с использованием SQL-запросов к серверам БД

4) рассмотреть структуру и назначение операторов SQL операторов определения данных DDL операторов манипулирования данных DML операторов управления данными DCL

5) изучить возможности использования SQL в прикладном программировании

При написании курсовой работы использовались научные труды следующих авторов Астахова ИФ[1] Боуман ДжС [2] Гарсиа-Молина Г[3] Дейт К[4-6] Дунаев ВВ[7] Жилин ДМ[9] и другие

1 ОСНОВНЫЕ ПОНЯТИЯ И ТЕХНОЛОГИИ РАСПРЕДЕЛЕННОЙ ОБРАБОТКИ ДАННЫХ

11 Основные понятия и классификация баз данных и систем управления базами данных

База данных (БД) – это совместно используемый набор логически связанных данных (и их описание) предназначенный для удовлетворения информационных потребностей пользователей

Система управления базами данных (СУБД) – программное обеспечение (ПО) с помощью которого пользователи могут определять создавать и поддерживать базу данных а также получать к ней контролируемый доступ [5 с 123]

По степени распределенности базы данных и СУБД разделяются локальные и распределенные групповые и корпоративные как показано на рисунке 1 [6 с 102]

Рисунок 1 — Классификация баз данных и СУБД по степени распределенности

Локальные базы данных и системы управления базами данных как правило реализуются на одном автономном компьютере и рассчитаны на работу одного пользователя Как правило приложения разрабатываются с помощью локальных баз данных например [7 с88] Clarion Clipper FoxPro Paradox dBase Microsoft Access

Групповые базы данных и системы управления базами данных реализуются в локальной сети и рассчитаны на работу группы пользователей подключенных к одному серверу баз данных которые называются SQL серверами Наиболее часто используемыми являются Oracle DB2 Microsoft SQL Server Inter Base Sybase Informix

Корпоративные базы данных и системы управления базами данных реализуются на больших предприятиях и могут поддерживать территориально разнесенные узлы в сети Как правило корпоративные БД и СУБД имеют иерархическую структуру состоящую из нескольких уровней Наибольшее распространение получили серверы баз данных Oracle DB2 Microsoft SQL Server [8 с 76]

По технологии хранения данных базы данных и СУБД классифицируются следующим образом (рисунок 2) [9 с 123]

Рисунок 2 — Классификация баз данных и СУБД по технологии хранения данных

Фактографические базы данных и СУБД являются аналогами бумажных карточек и предназначены для хранения данных представленных в строго фиксированных форматах и краткой форме

Документальные базы данных и СУБД являются аналогами исторических документов или архивов документов обеспечены формализованным аппаратом поиска и предназначены для хранения графических объектов и неструктурированных текстовых документов [10 с 156]

Централизованные базы данных и СУБД реализуются как правило либо на одном автономном компьютере либо в сети на основании архитектуры «клиент-сервер» хранение данных организовано только на одном компьютере

Распределенные базы данных и СУБД отличаются от централизованных тем что данные могут быть разбиты на разные части и храниться на нескольких компьютерах в вычислительной сети

По содержимому базы данных и СУБД разделяются на следующие группы [11 с 336]

1) графические предназначенные для хранения данных графических форматов как правило это базы данных фотографий архивы изображений различного стилевого оформления

2) исторические предназначенные для хранения текстовых данных представляющих историческую ценность это как правило базы данных для ведения исторических архивов предприятий выдающихся деятелей искусства культуры и науки

3) научные предназначенные для хранения текстовых и графических данных проведения научных исследований и отражения последних достижений науки и техники

4) мультимедийные предназначенные для хранения данных представленных в видео формате базы данных видеофильмов музыки проектов анимационных разработок

12 Модели построения баз данных

Модель данных — это абстрактное самодостаточное логическое определение объектов операторов и прочих элементов в совокупности составляющих абстрактную машину доступа к данным с которой взаимодействует пользователь Эти объекты позволяют моделировать структуру данных а операторы — поведение данных

В настоящее время существуют следующие основные модели построения баз данных иерархическая сетевая объектная объектно-ориентированная реляционная

Рассмотрим особенности каждой из моделей построения баз данных

Иерархическая структура представляет множество элементов имеющих между собой связи по определенным правилам Объекты связанные иерархическими отношениями образуют ориентированный граф (перевернутое дерево)

К основным понятиям иерархической структуры относятся уровень элемент (узел) связь

Узел — это совокупность атрибутов данных которые описывают некоторый объект

На схеме иерархического дерева узлы представляются вершинами графа Каждый узел на низшем уровне связан только с одним узлом который находится на более высоком уровне

Иерархическое дерево имеет единственную вершину (корень дерева) не подчиненную никакой другой вершине и находится на самом верхнем (первому) уровне Зависимые (подчиненные) узлы находятся на втором третьем и так далее уровнях Количество деревьев в базе данных соответствует числу корневых записей К каждой записи базы данных существует только один (иерархический) путь от корневой записи

Особенностью реализации операций поиска в иерархической модели является то что операция всегда начинает поиск с корневой вершины и специфицирует иерархический путь (последовательность связанных вершин) от корня до вершины экземпляры которой удовлетворяют условиям поиска

Структура иерархической модели данных представлена на рисунке 3 [12 с 206]

Рисунок 3 — Структура иерархической модели данных

Структура иерархической модели данных (рисунок 3) состоит из структурной части и управляющий части В структурной части иерархической модели данных выделяют поле представляющие собой наименьшую единицу данных доступную пользователю и сегмент для которого определяются тип и экземпляр Причем экземпляр сегмента образуется из значений полей данных заданных определенным образом и поименованной совокупности входящих в него типов полей данных определяемых типом сегмента

Основными достоинствами иерархической модели данных являются эффективное использование памяти ЭВМ высокая скорость выполнения операций над данными удобство работы с иерархически упорядоченной информацией

Недостатком иерархической модели является ее громоздкость для обработки информации с достаточно сложными логическими связями

На иерархической модели данных основано сравнительно ограниченное количество СУБД в числе которых можно назвать зарубежные системы IMS PC / Focus Team — Up и Data Edge а также отечественные системы Ока ИНЭС и МИРИС

Сетевая модель данных является расширением иерархического подхода описывается строгой математической теорией отражающей структурный целостный и аспект обработки данных и состоит из набора экземпляров определенного типа записи и набора экземпляров определенного типа связей между этими записями

Основное отличие сетевой структуры от иерархической структуры данных заключается в том что каждый элемент в сетевой структуре может быть связан с любым другим элементом

Достоинствами сетевой модели данных являются эффективность в использовании памяти компьютера высокая скорость выполнения основных операций над данными огромные возможности по сравнению с иерархической модели по образованию произвольных связей

Недостатками сетевой модели данных являются высокая сложность и жесткость схемы базы данных которая построена на ее основе трудность для понимания и выполнения обработки информации в базе данных непрофессиональным пользователем

Наиболее известными сетевыми СУБД являются IDMS db _ VistaIII СЕТЬ СЕТОР и КОМПАС

Объектная модель базы данных используется в основном для создания высокого уровня абстракции и работы с объектными данными такими как изображение музыка видео и различного текста

Характеристика современных объектных моделей баз данных приведена в таблице 1 [13 с 199]

Таблица 1 — Современные объектные модели баз данных

Название Назначение

Versant (разработка Versant Technologies) Используется для разработки телекоммуникаций

POET (компания POET Software) Поддержка интерфейсов C++ Java Visual Basic

Object Store PSE (разработка компании Object Design) Модули объектов Java

Объектно-ориентированная модель отличается от объектной модели тем что данные могут как моделироваться в виде объектов так и представляться атрибутами методами и классами [14 с 22]

Объектно-ориентированные модели представления данных позволяют идентифицировать отдельные записи базы Между записями базы данных и функциями их обработки формируются определенные взаимосвязи с помощью механизмов похожих на соответствующие средства в объектно-ориентированных языках программирования Характеристики объектно-ориентированной модели данных приведены в Приложении А

Достоинствами объектно-ориентированной модели данных являются возможность показа информации о сложных взаимосвязях объектов способность идентификации отдельной записи базы данных и определения функции ее обработки

К недостаткам объектно-ориентированной модели данных относятся трудность в понимании ее деятельности непрофессиональным пользователем неудобство обработки данных небольшая скорость выполнения запросов

Среди объектно-ориентированных СУБД можно выделить системы фирмы РОЕТ Software Versant фирмы Versant Technologies и др

Реляционная база данных представляет собой хранилище данных организованных в виде двумерных таблиц Таблицы отражают тип объекта (сущности) разделенные на строки представляющие собой экземпляры объекта и столбцы соответствующие атрибутам на пересечении которых содержатся значения данных составляющие основу организации реляционной модели данных

Для упорядочивания строк в реляционной таблице модели данных используется первичный ключ который представляет собой атрибут или группу атрибутов а для упорядочивания столбцов одной таблицы значения в котором совпадают со значениями в другой таблице используется внешний ключ Реляционная модель данных поддерживает операторы обработки отношений таких как реляционная алгебра и реляционное исчисление

Основные правила реляционной модели данных отражены на рисунке 4 [15 с 49]

Рисунок 4 — Основные правила реляционной модели данных

В реляционной модели данных различают связи по типу и мощности связи которая представляет собой отношение количества экземпляров родительской сущности к соответствующему количеству дочерней сущности

В таблице 2 приведены характеристики используемых в реляционной модели данных связей [16 с 36]

Таблица 2 — Виды связей используемых в реляционной модели данных

Название Характеристика

По типу

Идентифицирующая Экземпляр дочерней сущности идентифицируется через ее связь с родительской сущностью

Не идентифицирующая Атрибуты которые составляют первичный ключ родительской сущности входят в состав не ключевых атрибутов дочерней сущности

По мощности связи

Один к одному Одной строке родительской таблицы может соответствовать не более одной сроки дочерней таблицы

Один ко многим Одной строке родительской таблицы может соответствовать множество строк дочерней таблицы но любой сроке дочерней таблицы может соответствовать только одна строка родительской таблицы

Особое значение в реляционной модели данных уделяется нормализации отношений которая представляет собой процесс функциональной зависимости между атрибутами одного и того же отношения когда каждому значения одного атрибута соответствует только одно значение второго атрибута

Нормализация связана с разделением одной таблицы на две или более таблиц которые соответствуют требованиям нормальных форм характеристика которых приведена в таблице 3 [17 с 103]

Таблица 3 — Характеристика нормальных форм

Название формы Характеристика

Первая нормальная форма (1НФ) На любом пересечении строки и столбца находится единственное значение которое должно быть атомарным при этом не должно быть повторяющихся групп

Вторая нормальная форма (2НФ) В основе находится понятие полной функциональной зависимости когда один атрибут полностью функционально зависит от другого атрибута и не зависит от какого-либо подмножества атрибута

Третья нормальная форма (3НФ) В основе находится транзитивная зависимость то есть чтобы ни один не ключевой столбец не зависел бы от другого не ключевого столбца

Четвертая нормальная форма (4НФ) В основе находится многозначная зависимость которая существует между атрибутами некоторого отношения однако входящие в эти наборы значения не зависят друг от друга

Пятая нормальная форма (5НФ) Отношение которое не содержит зависимостей соединения то есть когда декомпозиция отношения может сопровождаться генерацией ложных строки при обратном соединении декомпозированных отношений с помощью операции естественного соединения

Достоинство реляционной модели данных заключается в простоте понятности и удобстве физической реализации на ЭВМ Именно простота и понятность для пользователя явились основной причиной ее широкого использования

К основным недостаткам реляционной модели относятся отсутствие стандартных средств идентификации отдельных записей и сложность описания иерархических и сетевых связей

Примерами зарубежных реляционных СУБД для ПЭВМ являются DB 2 Paradox FoxPro Access Clarion Oracle К отечественным СУБД реляционного типа относятся системы ПАЛЬМА и HyTech

На основании проведенного анализа основных моделей построения баз данных для дальнейшего исследования выбираем реляционную модель как наиболее простую и удобную для физической реализации на ЭВМ

13 Технологии распределенной обработки данных

Рассмотрим модели которые используются в технологии распределенной обработки данных

Технология модели «клиент-сервер» основана на принципе взаимодействия двух программных процессов в котором клиентский процесс запрашивал некоторые услуги а серверный – обеспечивал их выполнение причем один серверный процесс может обслужить множество клиентских процессов

В основу технологии «клиент-сервер» заложено разделение функций стандартного интерактивного приложения (рисунок 5) [18 с196]

Рис 5 Функции технологии «клиент-сервер»

В основе структуры типового интерактивного приложения работающего с базой данных содержатся [19 с179]

— претензионная логика которая определяется тем что пользователь видит на своем экране когда работает приложение

— бизнес — логика определяющая алгоритмы решения задач приложений и обычно создается с использованием различных языков программирования

— логика обработки данных которая отвечает за обработку данных внутри приложения для обеспечения доступа к которым используется язык запросов и средства манипулирования данными SQL

— процессор управления данными с помощью которого обеспечивается хранение и управление базами данных где функции СУБД должны быть скрыты от бизнес — логики приложений

Также для распределения указанных функций используются двухуровневые модели модель удаленного управления данными и модель файлового сервера

Распределение функций в модели файлового сервера данными показано на рисунке 6 [20 с108]

Рисунок 6 — Структура распределения функций в модели файлового сервера

Достоинством модели файлового сервера является то что не требуется разделение монопольного приложения на два взаимодействующих процесса при этом сервер как и при технологии «клиент-сервер» может одновременно обслуживать несколько клиентов которые обращаются к нему с запросами

Недостатки модели файлового сервера являются высокий сетевой трафик узкий спектр операций манипулирования с данными и отсутствие адекватных средств безопасности доступа к данным

В отличие от модели файлового сервера в модели удаленного доступа к данным база данных храниться на сервере на котором также находится ядро системы управления базами данных а на клиенте располагается претензионная логика и бизнес логика приложения как показано на рисунке 7 [21 с 223]

Рисунок 7 — Модель удаленного доступа к данным

Модель удаленного доступа к данным исключает главный недостаток модели файлового сервера поскольку от клиентов к серверу передаются не запросы на ввод-вывод а структурированные запросы объем которых значительно меньше и в ответ на запросы клиент получает только данные релевантные запросу а не блоки файлов

Таким образом модель удаленного доступа к данным наиболее подходит для реализации распределенной СУБД с использованием SQL запросов

2 ОСОБЕННОСТИ ЯЗЫКА СТРУКТУРИРОВАННЫХ ЗАПРОСОВ SQL

21 Общие понятия о языке SQL

Язык структурированных запросов SQL является информационно-логическим языком предназначенным для описания изменения и извлечения данных хранимых в реляционных базах данных [22 с 102]

Язык SQL является основным способом работы пользователя с базой данных и позволяет выполнять следующий набор операций приведенных на рисунке 8 [23 с 63]

Рисунок 8 — Возможности SQL

При всех своих изменениях SQL остаётся единственным механизмом связи между прикладным программным обеспечением и базой данных

В то же время современные СУБД а также информационные системы использующие СУБД предоставляют пользователю развитые средства визуального построения запросов

Каждое предложение SQL – это запрос или обращение к базе данных которое приводит к изменению в базе данных

В соответствии с тем какие изменения происходят в базе данных различают следующие типы запросов (рисунок 9) [24 с 122]

Рисунок 9 — Типы запросов для организации работы СУБД

Основным объектом хранения реляционной базы данных является таблица поэтому все SQL-запросы — это операции над таблицами В соответствии с этим запросы делятся на [25 с 169]

— запросы оперирующие самими таблицами (создание и изменение таблиц)

— запросы оперирующие с отдельными записями (или строками таблиц) или наборами записей

Каждая таблица описывается в виде перечисления своих полей (столбцов таблицы) с указанием

— типа хранимых в каждом поле значений

— связей между таблицами (задание первичных и вторичных ключей)

— информации необходимой для построения индексов

Запросы первого типа в свою очередь делятся на запросы предназначенные для создания в базе данных новых таблиц и на запросы предназначенные для изменения уже существующих таблиц

Запросы второго типа оперируют со строками и их можно разделить на запросы следующего вида [26 с 108]

— вставка новой строки

— изменение значений полей строки или набора строк

— удаление строки или набора строк

Самый главный вид запроса — это запрос возвращающий (пользователю) некоторый набор строк с которым можно осуществить одну из трёх операций [27 с 223]

— просмотреть полученный набор

— изменить все записи набора

— удалить все записи набора

Таким образом использование SQL сводится по сути к формированию всевозможных выборок строк и совершению операций над всеми записями входящими в набор [28 c23]

22 Структура и назначение операторов SQL

Различают следующие основные операторы SQL

1) операторы определения данных DDL

2) операторы манипулирования данными DML

3) операторы управления транзакциями TCL

Операторы определения объектов базы данных позволяют создавать удалять изменять базу данных таблицы в базе данных а также выполнять операции с доменами баз данных и представлениями

Основные операторы определения объектов базы данных DDL и их назначение приведены в таблице 4 [28 с 56]

Таблица 4 — Основные операторы определения объектов базы данных DDL

Название Значение

CREATE SCHEMA Создание схемы базы данных

DROP SHEMA Удалить схему базы данных

CREATE TABLE Создать таблицу

ALTER TABLE Изменить таблицу

DROP TABLE Удалить таблицу

CREATE DOMAIN Создать домен

ALTER DOMAIN Изменить домен

DROP DOMAIN Удалить домен

CREATE COLLATION Создать последовательность

DROP COLLATION Удалить последовательность

CREATE VIEW Создать представление

DROP VIEW Удалить представление

Операторы манипулирования данными DML позволяют отобрать добавить и изменить строки в таблице базы данных а также зафиксировать и откатить внесенные изменения как показано в таблице 5 [28 с 52]

Таблица 5 – Основные операторы манипулирования данными DML

Название Значение

SELECT Отобрать строки из таблиц

INSERT Добавить строки в таблицу

UPDATE Изменить строки в таблице

DELETE Удалить строки в таблице

COMMIT Зафиксировать внесенные изменения

ROLLBACK Откатить внесенные изменения

Операторы управления транзакциями позволяют создавать и удалять ограничения предоставлять и отменять привилегии пользователю или приложению на манипулирование объектами и их назначение приведено в таблице 6 [28 с 46]

Таблица 6 — Операторы управления транзакциями TCL

Название Значение

CREATE ASSERTION Создать ограничение

DROP ASSERTION Удалить ограничение

GRANT Предоставить привилегии пользователю или приложению на манипулирование объектами

REVOKE Отменить привилегии пользователя или приложения

23 Преимущества и недостатки языка SQL

Так как существует общепринятый стандарт языка SQL многие разработчики СУБД стараются придерживаться его Использование базой данных языка SQL является одним из факторов определяющих ее успешность и распространенность

Существуют различия в синтаксисе между конкретными СУБД но в большинстве случаев запросы из одной СУБД могут быть перенесены на другую с минимальными изменениями

Наличие стандартов и набора тестов для определения совместимости конкретной реализации SQL к общепринятому стандарту заметно способствует унификации языка

Правда стоит заметить что сам по себе стандарт несколько раздут в размерах (Например размер части «ядра» стандарта SQL занимает 1300 страниц текста) [20 с 44]

Основные преимущества языка структурированных запросов SQL приведены на рисунке 10 [2 с 90]

Для опытных программистов баз данных важно знать каким образом СУБД будет обрабатывать его запрос поэтому в большинстве СУБД предусмотрена возможность показать программисту последовательность действий которую будет выполнять СУБД при запросе

При этом программист имеет возможность «подсказывать» СУБД при формировании запроса какие лучше использовать индексы и в каком порядке

Рисунок 10 — Преимущества языка SQL

К основным недостаткам языка SQL относятся неопределенные значения возможность дублирования отсутствие поддержки свойства «=» и высокая избыточность Современный язык структурированных запросов SQL считается сложным для освоения с ним работают в основном программисты хотя изначально он задумывался как язык с которым сможет работать конечный пользователь [21 с 245]

Таким образом язык SQL является одним из языков появившихся в результате разработки реляционной модели данных который фактически превратился в стандартный язык реляционных баз данных поэтому представляет большой интерес рассмотреть в третьей главе применение языка SQL в прикладном программировании

3 ИСПОЛЬЗОВАНИЕ SQL В ПРИКЛАДНОМ ПРОГРАММИРОВАНИИ

31 Обоснование выбора применяемых технологий для решения задачи

Сегодня существует много различных технологий позволяющих создавать веб-приложения разной степени сложности К ним относятся ASP ASPNET PHP JSP и многие другие Наиболее популярной и распространённой технологией на сегодняшний день является PHP во многом благодаря своей бесплатности [20 с 72]

ASPNET – это новая технология разработанная компанией Microsoft и являющаяся частью среды NET Framework Она позволяет динамически создавать документы на веб-сервере когда они запрашиваются по протоколу HTTP

PHP – это открытая и бесплатная технология PHP – это скриптовый язык созданный для динамического вывода HTML

JSP (Java Server Pages) — технология позволяющая веб-разработчикам легко создавать содержимое которое имеет как статические так и динамические компоненты По сути страница JSP является текстовым документом который содержит текст 2-х типов

— статические исходные данные которые могут быть оформлены в одном из текстовых форматов HTML SVG WML

— XML и JSP элементы которые конструируют динамическое содержимое

Кроме этого могут использоваться библиотеки JSP тегов а также EL (Expression Language) для внедрения Java-кода в статичное содержимое JSP-страниц

Одним из важнейших факторов влияющим на выбор той или иной технологии является быстродействие особенно при одновременной работе с множеством пользователей Утверждать что какая — то из технологий всегда выигрывает в быстродействии нельзя необходимо рассматривать каждый конкретный случай отдельно

Скорость работы обеспечивается тем что все РНР-приложения работают в едином адресном пространстве тогда как ASPNET за счет сложной модели классов многократно проверяет и перепроверяет данные удерживая каждое приложение в отдельном адресном пространстве

Первый подход более быстр но менее надежен второй — более надежен но за это приходится платить

Отдельно стоит упомянуть об обеспечении быстродействия при взаимодействии с СУБД Технология PHP ориентирована на работу с MySQL а ASPNET – с MS SQL Server Это значит что наилучшее быстродействие будет достигаться при использовании соответствующей СУБД

JSP — одна из высокопроизводительных технологий так как весь код страницы транслируется в Java-код сервлета с помощью компилятора JSP страниц Jasper и затем компилируется в байт-код виртуальной машины Java (JVM) Контейнеры сервлетов способные исполнять JSP страницы написаны на языке Java который может работать на различных платформах JSP страницы загружаются на сервере и управляются из структуры специального Java Server Packet который называется Java EE WEB Application в большинстве своём упакованные в файловые архивы war и ear

Выгода которую дает технология JSP в сравнении с другими веб-технологиями заключается в том что JSP является платформонезависимой переносимой и легко расширяемой технологией для разработки веб-приложений

Любая из представленных технологий сможет реализовать требования предъявляемые к нашему приложению Одним из ключевых фактов однако является хостинг созданной системы и тут у РНР весомое преимущество в интернете существует огромное число хостингов поддерживающих РНР в связке с MySQL это и повлияло на выбор используемого языка программирования для серверной части системы [19 с 170]

Для разработки клиентской части системы используется язык программирования JavaScript

Язык JavaScript — это прототипно-ориентированный сценарный язык программирования Является диалектом языка ECMAScript

Язык JavaScript обычно используется как встраиваемый язык для программного доступа к объектам приложений Наиболее широкое применение находит в браузерах как язык сценариев для придания интерактивности веб-страницам

Основные архитектурные черты динамическая типизация слабая типизация автоматическое управление памятью прототипное программирование функции как объекты первого класса

На JavaScript оказали влияние многие языки при разработке была цель сделать язык похожим на Java но при этом лёгким для использования непрограммистами Языком JavaScript не владеет какая-либо компания или организация что отличает его от ряда языков программирования используемых в веб-разработке

Язык JavaScript практически не имеет конкурентов единственным языком программирования – конкурентом JavaScript является язык Dart разработанный в google но он так и не приобрел популярность

А вот фреймворков облегчающих разработку на JavaScript создано десятки например Backbonejs Emberjs CanJS AngularJS Dojo YUI jQuery KnockoutJS ExtJS

Для создания системы выбран фреймворк jQuery как один из наиболее популярных а также рекомендуемых для простых веб-приложений и сайтов Обеспечивающих кроссбраузерность легкую обработку событий взаимодействие с удаленными сервисами расширяемость и огромный набор плагинов В работе был использован свободный набор инструментов для создания сайтов и веб-приложений Twitter Bootstrap основанный на фреймворке jQuery

Разрабатываемая система будет хранить значительные объёмы структурированной информации к которой необходимо обеспечить эффективный множественный доступ Исходя из этого в качестве информационной системы была выбрана реляционная база данных

Для управления базой данных необходимо выбрать СУБД которая будет максимально отвечать требованиям предъявляемым к разрабатываемому веб-приложению

Довольно часто для малых и средних проектов используется СУБД MySQL она первоначально была разработана как простая бесплатная база данных Однако при правильной архитектуре ее можно использовать и для высоконагруженных отказоустойчивых систем Связка РНР +MySQL является наиболее популярной у веб разработчиков а также стала необходимым условием предоставления услуг для веб хостинга

Для написания и локального тестирования системы выбрался Open Server Это портативная программная платформа созданная специально для веб-разработчиков с учётом их рекомендаций и пожеланий

Программный комплекс имеет богатый набор серверного программного обеспечения удобный многофункциональный продуманный интерфейс обладает мощными возможностями по администрированию и настройке компонентов Платформа широко используется с целью разработки отладки и тестирования веб-проектов а так же для предоставления веб-сервисов в локальных сетях

Open Server включает в себя Apache nginx PHP MySQL phpMyAdminFTP-серверFileZilla

Open Server— это пожалуй наилучший комплект на сегодняшний день для создания и тестирования локальных сайтов под Windows Удобное меню система запуска простое создание виртуальных хостов внимание к мелочам позволяют легко работать начинающим веб-разработчикам а входящие в комплект компоненты устроят и профессиональных программистов

Для хостинга сайта был выбран сервис Hostingerru Компания Hostinger – лидер услуг бесплатного веб-хостинга Пользователи могут создавать собственные сайты без лишних расходов без рекламы и под любые потребности На этом сервисе поддерживается PHP MySQL и FTP-сервер Это необходимый минимум для работоспособности разрабатываемой системы Также сервис предоставляет собственные домены 3 уровня

32 Реализация программной части веб — приложения

Реляционная структура базы данных приведена на рисунке 11

Рисунок 11 — Реляционная структура базы данных

Таблица users содержит информацию о пользователях Поле nickname является логином пользователя на сайт Поля password_hash и salt отвечают за хранение пароля пользователя в БД

Таблица categories содержит список категорий (тем) рассылки и определить какой пользователь подписан на какие категории рассылки помогает таблица subscriptions если она содержит ключ ID пользователя — ID категории то пользователь подписан на эту категорию

Таблица mails хранит в себе все отправленные сообщения Понять какие сообщения были отправлены для каких категорий помогает таблица mailing_map Если она содержит ключ ID категории — ID сообщения то данное сообщение передавалось для всех пользователей данной категории

Таблица hashes требуется для автоматической авторизации пользователя со всех устройств с которых он уже входил в систему при загрузке сайта с устройства если пользователь не залогинен то в cookies проверяется хэш сайта и если совпадают пары хэш и ID пользователя происходит автоматическая авторизация пользователя

Описание таблиц базы данных приведено в Приложении Б

Запросы формирующие базу данных приведены в Приложении В

Для работы с базой данных и формирования контента сайта используется язык php

Описание взаимодействия с базой данных средствами PHP приведено в Приложении Г

33 Описание общей схемы взаимодействия компонент веб-приложения основные сценарии работы

Попав на сайт пользователь может зарегистрироваться или авторизоваться Если пользователь попытается подписаться на рассылку без авторизации то всплывет модальное окно с приглашением войти на сайт Пользователи могут изменять настройки своих подписок

Администратор имеет расширенный интерфейс он может изменять настройки пользователь а также изменять настройки категорий рассылок в специальных меню доступных только людям с правами администратора Также он может создать дополнительные категории посмотреть архив рассылок и создать свою собственную рассылку

Все события обрабатываются скриптом indexphp или скриптами доступными в папке / scripts Все скрипты из этой папке не опасны тк не содержат информации для подключения к базе данных

Схема переходов пользователя приведена на рисунке 12

Рисунок 12 — Схема переходов пользователя

Как видно из рисунка 12 схема переходов пользователя включает регистрацию авторизацию восстановление пароля подписаться и отписаться от категории

Основные страницы веб — приложения приведены в Приложении Д

В третьей главе курсовой работы рассмотрен практический пример использования SQL в прикладном программировании на основании разработки веб — приложения для которого была разработана и описана реляционная база данных созданы SQL запросы по работе с базой данных и описан интерфейс пользователя

ЗАКЛЮЧЕНИЕ

В первом разделе данной курсовой работы были изучены основные понятия и технологии распределенной обработки данных

База данных представляет собой набор логически связанных данных которые предназначен для удовлетворения информационных потребностей пользователей а система управления базами данные – это программное обеспечение (ПО) с помощью которого пользователи могут определять создавать и поддерживать базу данных а также получать к ней контролируемый доступ

Проведена классификация баз данных и СУБД по степени распределенности по технологии хранения данных в зависимости от характера хранимой информации и способа хранения данных а также по содержимому

Проведен сравнительных анализ основных моделей построения баз данных обоснованно выделена реляционная модель построения баз данных для дальнейшего исследования

Реляционная модель данных представляет собой логическую модель данных построенную на основе набора отношений и аспекта целостности где отношения отвечают определенным условиям целостности и принципам обработки с помощью которого реляционная модель данных поддерживает операторы обработки отношений таких как реляционная алгебра и реляционное исчисление

В результате изучения технологий распределенной обработки данных была рассмотрена технология модели «клиент-сервер» основана на принципе взаимодействия двух программных процессов в котором клиентский процесс запрашивал некоторые услуги а серверный – обеспечивал их выполнение причем один серверный процесс может обслужить множество клиентских процессов

Также для распределения указанных функций рассмотрены структура достоинства и недостатки двухуровневых моделей модель удаленного управления данными и модель файлового сервера которые исключают недостатки одноуровневой «клиент-серверной» технологии

На основании проведенного исследования в первой главе обоснованно выбраны для дальнейшего исследования реляционная модель построения баз данных и модель удаленного управления данных как наиболее подходящие для распределенной обработки данных с использование SQL-запросов к серверу БД

Во втором разделе были рассмотрены особенности построения языка структурированных запросов SQL который является информационно-логическим языком предназначенным для описания изменения и извлечения данных хранимых в реляционных базах данных

Каждое предложение SQL – это запрос или обращение к базе данных которое приводит к изменению в базе данных

Таким образом использование SQL сводится по сути к формированию всевозможных выборок строк и совершению операций над всеми записями входящими в набор

Различают следующие основные операторы SQL операторы определения данных DDL операторы манипулирования данными DML операторы управления транзакциями TCL

Наличие стандартов и набора тестов для определения совместимости конкретной реализации SQL к общепринятому стандарту заметно способствует унификации языка При этом программист имеет возможность «подсказывать» СУБД при формировании запроса какие лучше использовать индексы и в каком порядке

В третьем разделе данной курсовой работе рассмотрен практический пример использования SQL в прикладном программировании на основании разработки веб — приложения для которого была разработана и описана реляционная база данных созданы SQL запросы по работе с базой данных и описан интерфейс

В процессе выполнения курсовой работы решены следующие задачи

1) раскрыты сущность понятий база данных системы управления базами данных путем изучения классификации баз данных и СУБД по степени распределенности по технологии хранения данных по содержимому по моделям построения

2) рассмотрены особенности реализации реляционной модели данных

3) рассмотрены технологии распределенной обработки данных путем определения из достоинств и недостатков проведения сравнительного анализа а также выделена технология которая наиболее подходит для распределенной обработки данных с использованием SQL-запросов к серверам БД

4) выделена структура и определены назначения основных операторов SQL операторов определения данных DDL операторов манипулирования данных DML операторов управления данными DCL

5) рассмотрены и реализованы на практике возможности использования SQL в прикладном программировании

Учитывая что все поставленные задачи курсовой работы решены можно обоснованно утверждать что главная цель исследования – достигнута

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

1 Астахова ИФ Толстобров АП Мельников ВМ SQL в примерах и задачах – Мн Новое знание 2011 – С4

2 Боуман ДжС Эмерсон СЛ Дарновски М Практическое руководство по SQL – Вильямс 2011 – С56-90

3 Гарсиа-Молина Г Ульман Дж Уидом Дж Системы баз данных Полный курс — Вильямс 2010 – С125

4 Дейт К Введение в системы баз данных 8-е издание – Вильямс 2006 – С725

5 Дейт К SQL и реляционная теория Как грамотно писать код на SQL – Символ-Плюс 2010 – С123

6 Дейт К Дарвен Х Основы будущих систем баз данных Третий манифест – Янус-К 2011 – С102

7 Дунаев ВВ Базы данных Язык SQL – СПб БХВ-Петербург 2010 – С88

8 Дж Кастаньетто ХРават СШуман КСколло ДВелиаф «Профессиональное РНР программирование» – Пер с англ – СПб Символ-Плюс 2010 – С76

9 Жилин ДМ Теория систем опыт построения курса – КомКнига 2011 – С123

10 Иванова ГС – «Основы программирования» Учебник для вузов – М Изд-во МГТУ им НЭ Баумана 2010 – С156

11 Коггзолл Джон PHP 5 Полное руководство – М Вильямс 2012 – С336

12 Кренке Д Теория и практика построения баз данных – Питер 2010 – С206

13 Мирошниченко Г Реляционные базы данных Практические приемы оптимальных решений – СПб БХВ-Петербург 2011 – С199

14 Новиков Б Домбровская Г Настройка приложений баз данных – BHV 2011 – С22

15 Советов БЯ Цехановский ВВ Чертовской ВД Базы данных Теория и практика– Высшая школа 2010 – С49

16 Скотт В Эмблер Прамодкумар Дж Садаладж Рефакторинг баз данных Эволюционное проектирование – Вильямс 2010 – C36

17 Тоу Д Настройка SQL Для профессионалов – Питер 2011 – С103

18 Фейт С TCP/IP Архитектура протоколы и реализация (включая IP версии 6 и IP Security) – Питер 2011 С196

19 MySQL Библиотека профессионала – Киев Диалектика 2012 – С170-179

20 PHP/MySQL для начинающих – Кудиц-образ 2010 – С44-108

21 Теория и практика построения баз данных Д Крёнке – Питер 2011 – С223-250

22 Базы данных «Проектирование реализация и сопровождение» Томас Конном Королинг Берг – 2010 – С102

23 Microsoft Access 2007 Шаг за шагом Практическое пособие / Пер с англ – М ЭКОМ 2011 – С63

24 Багриновский КА Хрусталев ЕЮ Новые информационные технологии – М ЭКО 2011 – С122

25 Информатика и информационно-коммуникационные технологии Базовый курс ИГ Семакин СВ Русаков ЛВ Шестакова — М БИНОМ Лаборатория знаний 2010 – С 169

26 Компьютерные технологии обработки информации / Под ред СВ Назарова — М Финансы и статистика 2005 – С108

27 Соболь БВ Галин АБ Панов ЮВ и др Информатика учебник – М Феникс 2007 – С223

28 Шкарина Л Язык SQL учебный курс – СПб Питер 2001 – С23-96

Приложение А

Характеристики объектно-ориентированной модели данных

Название Значение

Поддержка сложных объектов Предусмотрена возможность создания составных объектов за счет применения конструкторов составных объектов Необходимо чтобы конструкторы объектов были ортогональны то есть любой конструктор можно было применять к любому объекту

Поддержка индивидуальности объектов Основным требованием является что все объекты должны иметь уникальный идентификатор который не зависит от значений их атрибутов

Поддержка инкапсуляции Корректная инкапсуляция достигается за счет того что программисты обладают правом доступа только к спецификации интерфейса методов а данные и реализация методов скрыты внутри объектов

Поддержка типов и классов Необходима концепция между типами и классами компилятор может использовать информацию для проверки выполняемых с переменной операций на совместимость с ее типом

Поддержка наследования типов и классов от их предков Подкласс должен наследовать атрибуты и методы его супертипа и для обеспечения этой функциональности связывание имен методов в системе не должно выполняться до времени выполнения программы

Вычислительная полнота Язык программирования должен быть общего назначения для манипулирования данными

Расширенность набора типа данных Наличие средств для создания новых типов данных на основе набора предопределенных системных типов Особое требование – это то что между способами использования системных и пользовательских типов данных не должно быть никаких различий

Приложение Б

Описание таблиц базы данных

Таблица users

`u_id` Первичный ключ пользователя

`nickname` Логин пользователя

`email` Адрес электронной почты пользователя

`password_hash` Хэш пароля пользователя

`salt` Соль используемая для получения пароля пользователя

`reg_date` Дата регистрации

`last_update` Дата последних изменений профиля пользователя

`role` Права пользователя

Таблица categories

`id` Первичный ключ категории

`name` Название категории

`description` Описание категории

`promo_content` Контент демонстрирующийся на сайте для рекламы категории

`date_create` Дата создания категории

Таблица subscriptions

`fk_user` Внешний ключ к таблице пользователей

`fk_category Внешний ключ к таблице категорий

Таблица mails

`id` Первичный ключ сообщения

`content` Содержание сообщения

`date_create` Дата создания сообщения

Таблица mailing_map

`fk_mail` Внешний ключ к таблице сообщений

`fk_category` Внешний ключ к таблице категорий

Таблица hashes

`h_id` Первичный ключ хэша

`u_fk` Внешний ключ к таблице пользователей

`s_hash` Значение хэша

`date_create` Дата создания записи

`last_update` Дата последнего обновления хэша

Приложение В

Запросы формирующие базу данных

CREATE DATABASE IF NOT EXISTS `emailbd` /*!40100 DEFAULT CHARACTER SET utf8 */

USE `emailBD`

CREATE TABLE IF NOT EXISTS `users` (

`u_id` int(11) NOT NULL AUTO_INCREMENT

`nickname` varchar(50) NOT NULL

`email` varchar(50) NOT NULL

`password_hash` varchar(64) NOT NULL

`salt` varchar(64) DEFAULT NULL

`reg_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP

`last_update` datetime DEFAULT NULL

`role` varchar(30) DEFAULT NULL

PRIMARY KEY (`u_id`)

UNIQUE KEY `nickname` (`nickname`)

UNIQUE KEY `email` (`email`)

KEY `password_hash` (`password_hash`)

) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8

CREATE TABLE IF NOT EXISTS `categories` (

`id` int(11) NOT NULL AUTO_INCREMENT

`name` varchar(100) NOT NULL

`description` text

`promo_content` text

`date_create` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8

CREATE TABLE IF NOT EXISTS `subscriptions` (

`fk_user` int(11) NOT NULL

`fk_category` int(11) NOT NULL

PRIMARY KEY (`fk_user«fk_category`)

KEY `fk_category` (`fk_category`)

CONSTRAINT `subscriptions_ibfk_1` FOREIGN KEY (`fk_user`) REFERENCES `users` (`u_id`) ON DELETE CASCADE ON UPDATE CASCADE

CONSTRAINT `subscriptions_ibfk_2` FOREIGN KEY (`fk_category`) REFERENCES `categories` (`id`) ON DELETE CASCADE ON UPDATE CASCADE

) ENGINE=InnoDB DEFAULT CHARSET=utf8

CREATE TABLE IF NOT EXISTS `mails` (

`id` int(11) NOT NULL AUTO_INCREMENT

`content` text

`date_create` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8

CREATE TABLE IF NOT EXISTS `mailing_map` (

`fk_mail` int(11) NOT NULL

`fk_category` int(11) NOT NULL

PRIMARY KEY (`fk_mail«fk_category`)

KEY `fk_category` (`fk_category`)

CONSTRAINT `mailing_map_ibfk_1` FOREIGN KEY (`fk_mail`) REFERENCES `mails` (`id`) ON DELETE CASCADE ON UPDATE CASCADE

CONSTRAINT `mailing_map_ibfk_2` FOREIGN KEY (`fk_category`) REFERENCES `categories` (`id`) ON DELETE CASCADE ON UPDATE CASCADE

) ENGINE=InnoDB DEFAULT CHARSET=utf8

CREATE TABLE IF NOT EXISTS `hashes` (

`h_id` int(11) NOT NULL AUTO_INCREMENT

`u_fk` int(11) NOT NULL

`s_hash` varchar(64) DEFAULT NULL

`date_create` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP

`last_update` datetime DEFAULT NULL

PRIMARY KEY (`h_id`)

KEY `hashes_ibfk_1` (`u_fk`)

CONSTRAINT `hashes_ibfk_1` FOREIGN KEY (`u_fk`) REFERENCES `users` (`u_id`) ON DELETE CASCADE ON UPDATE CASCADE

) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8

Приложение Г

Взаимодействие с БД средствами PHP

Mail – Класс письмо

Private

$id id письма в таблице

$content Содержимое письма

$date_create Дата добавления в таблицу письма

Public

__construct ($data) Вызывает контсруктор объекта (устанавливает значения полей)

__get_id() Получить значение переменной $id

__get_content() Получить значение переменной $content

__get_date_create() Получить значение переменной $ date_create

__set_id ($val) Установить значение переменной $id

__set_content ($val) Установить значение переменной $content

__set_date_create ($val) Установить значение переменной $ date_create

MailManager – Отвечает за создание письма и рассылку пользователям

public static

CreateMail ($content) Сохраняет письмо в БД

SendMailText ($mailAdres$content) Отправляет письмо по указанному адресу

CreateMailing ($listCategories$content) Выполняет рассылку всем пользователям подписанным на категории содержащимся в списке $ listCategories

GetListMails ($start$skip) Возвращает массив писем размером $skip начиная с элемента $start из БД

Category – Класс категория (тема подписки)

Private

$id id категории в таблице

$name Название категории

$description Описание категории

$promo_content Контент который будет представлять на сайте категорию

$date_create Дата добавления в таблицу письма

Public

__construct ($data) Вызывает контсруктор объекта (устанавливает значения полей)

__get_id() Получить значение переменной $id

__get_name() Получить значение переменной $name

__get_description() Получить значение переменной $ description

__get_promo_content() Получить значение переменной $promo_content

__get_date_create() Получить значение переменной

$date_create

__set_id ($val) Установить значение переменной $id

__set_name ($val) Установить значение переменной $name

__set_description ($val) Установить значение переменной $description

__set_promo_content ($val) Установить значение переменной $ promo_content

__set_date_create ($val) Установить значение переменной $ date_create

MailManager – Управляет множеством товаров как одной сущностью

public static

CreateMail ($content) Сохраняет письмо в БД

SendMailText ($mailAdres$content) Отправляет письмо по указанному адресу

CreateMailing ($listCategories$content) Выполняет рассылку всем пользователям подписанным на категории содержащимся в списке $ listCategories

GetListMails ($start$skip) Возвращает массив писем размером $skip начиная с элемента $start из БД

User – Класс пользователь

Private

$id id пользователя в таблице

$email Адрес электронной почты пользователя

$nickname Имя пользователя на сайте

$password_hash Хэш пароля пользователя

$salt Соль пользователя при получении хэша пароля

$reg_date Дата регистрации пользователя

$last_update Последнее обновление настроек пользователя

$role Права пользователя (user/admin)

Public

__construct ($data) Вызывает контсруктор объекта (устанавливает значения полей)

__get_u_id() Получить значение переменной $u_id

__get_role() Получить значение переменной $role

__get_email() Получить значение переменной $email

__get_nickname() Получить значение переменной $nickname

__get_reg_date() Получить значение переменной

$reg_date

__get_last_update() Получить значение переменной $last_update

__get_salt() Получить значение переменной $salt

__get_password_hash() Получить значение переменной $ password_hash

__set_u_id ($val) Установить значение переменной $u_id

__set_role ($val) Установить значение переменной $role

__set_email ($val) Установить значение переменной $email

__set_nickname ($val) Установить значение переменной $nickname

__set_reg_date ($val) Установить значение переменной

$reg_date

__set_last_update ($val) Установить значение переменной $last_update

__set_salt ($val) Установить значение переменной $salt

__set_password_hash ($val) Установить значение переменной $ password_hash

UserManager – Класс отвечает за регистрацию/ аутентификацию/удаление пользователей

Public

__construct() Вызывает контсруктор объекта (устанавливает значения полей)

Public static

generateSalt() Возвращает случайную последовательность для соли к паролю пользователя

myCrypt ($pass$salt)() Возвращает хэш пароля пользователя и соли

updateHashe_Cookie ($q_id$q_hahs) Устанавливает в cookie новое значение параметра SH (используется для автоматического логина пользователя)

checkUserByNickname_Pass ($login$pass) Сравнивает введенный пароль пользователя с хранящимся в базе (их хэши) и возвращает ID пользователя в случае совпадения

setCookie ($id=null) Устанавливает cookie в браузер пользователя (параметры userid SH)

delCookie ($id=null) Удаляет cookie с браузера пользователя

refreshUser ($q_id$q_hahs) Обновляет параметр SH в cookie пользователя

registrationUser ($login$pass$mail) Регистрирует пользователя – сохраняет в БД его логин пароль и адрес электронной почты

recoveryUserByNickname ($login) Отсылает на почту пользователя по его запросу новый пароль сгенерированный автоматически

recoveryUserByID ($userid) Отсылает на почту пользователя по запросу администратора новый пароль сгенерированный автоматически

sendUserNewPassByMail ($usr0$new_pass) Функция отвечает непостредственно за отсылку пользователю пароля

checkUserByNickname ($login) Проверяет наличие в БД пользователя с переданным логином

deleteUser ($id) Удаляет пользователя из БД

SettingController – Класс отвечает за действия над пользователями из административной части сайта

Public static

getListUsers() Возвращает список пользователей

getListCategories() Возвращает списко категорий

getUserByID ($u_id) Возвращает данные пользователя по его ID

getCategoryByID ($cat_id) Возвращает данные каотегории по ее ID

getCategoriesMapByUser ($u_id) Возвращает все категории и выделяет категории на которые подписан пользователь

getNumberSubscriberByCategoryId ($cat_id) Вовзращает число подписанных пользователей на категорию

updateSubscription ($userid$cat_id$statuse) Изменяет состояние подписки пользователя на категорию

updateRole ($userid$role) Изменяет права пользователя на сайте

newCategory ($name$description$content) Создает новую категорию

updateCategory ($cat_id$name$description$content) Изменяет категорию

deleteCategory ($cat_id) Удаляет категорию

DBConnect– Класс для работы с БД

private static

$DB_HOST Адрес БД

$DB_NAME Имя БД

$DB_USER Имя пользователя в БД

$DB_PASS Пароль пользователя в БД

protected $DBH Объект — соединение с БД

public function

getUserByID ($id=null) Возвращает пользователя

deleteUserByID ($u_id) Удаляет пользователя из БД

getUserByNickname ($nickname=null) Возвращает пользователя по его логину

getUserByNicknameForRecovery ($login) Возвращает пользователя (его ID) если он есть в БД (логин)

getUserByMail ($mail=null) Возвращет пользователя по его адресу электронной почты

addSubscription ($fk_user$fk_category) Добавляет подписку пользователю на категорию

DBConnect– Класс для работы с БД

delSubscription ($fk_user$fk_category) Удаляет подписку пользователю на категорию

addMailingMap ($fk_mail$fk_category) Добавляет в БД информацию о том какое сообщение было отправлено по каким категориям

delMailingMap ($fk_mail$fk_category) Удаляет из БД информацию о том какое сообщение было отправлено по каким категориям

addUser ($nickname$pass_hash$salt$mail=null$role=’user’) Добавляет в БД нового пользователя

addCoupleUserID_Hash ($u_id$hash) Добавляет в таблицу хэшей пару – ID пользователя и его хэщ

delCoupleUserID_Hash ($u_id$hash Удаляет запись из таблицы хэшей

updCoupleUserID_Hash ($u_id$hash$new_hash) Обновляет запись в таблице хэшей

getCountCoupleUserID_Hash($u_id$hash) Возвращает из БД число устройств с которых залогинен пользователь

getCountUsersByMail ($mail) Возвращает число пользователей в БД с указанным адресом электронной почты

updPassword_SoltByUserID ($u_id$new_pass_hash$new_solt) Обновляет хэш и соль пароля пользователя

getListUsers ($skip=0$max=1000) Возвращает список пользователей

getListCategories ($skip=0$max=100) Возвращает список категорий

getMapCategoriesByUser ($userid) Возвращает список всех категорий и отмечает на какие подписан пользователь

getCountSubscriberByCategoryID ($cat_id) Возвращает число пользователей подписанных на категорию

getCategoryByID ($id=null) Возвращает данные о категории

updUserRoleByID ($id$role) Обновляет права пользователя на сайте

addCategory ($name$description$content) Добавляет новую категорию

updateCategory ($id $name $description $content) Обновляет параметры категории

deleteCategory ($id) Удаляет категорию

addMail ($content) Записывает в БД текст письма

getListEmailsByCategoriesID($listCategoryID) Возвращает массив адресов электронных почт пользователей подписанных на категории указанные в параметр

getListMailsForArhive ($start=0$skip=20) Возвращает массив писем которые были посланы по категориям указанным в параметре

Приложение Д

Основные элементы интерфейса пользователя сервиса подписки

Рисунок П1 — Главная страница сайта

Рисунок П2 — Страница авторизации

Рисунок П3 — Страница управления настройками

Рисунок П4 — Страница архива рассылок

Рисунок П5 — Страница создания новой рассылки